<!--{
	"Title": "Go 1.19 Release Notes",
	"Path":  "/doc/go1.19"
}-->
<!--
NOTE: In this document and others in this directory, the convention is to
set fixed-width phrases with non-fixed-width spaces, as in
<code>hello</code> <code>world</code>.
Do not send CLs removing the interior tags from such phrases.
-->
<style>
  main ul li { margin: 0.5em 0; }
</style>
<h2 id="introduction">DRAFT RELEASE NOTES — Introduction to Go 1.19</h2>
<p>
  <strong>
    Go 1.19 is not yet released. These are work-in-progress
    release notes. Go 1.19 is expected to be released in August 2022.
  </strong>
</p>
<h2 id="language">Changes to the language</h2>
<p>
  TODO: complete this section
</p>
<h2 id="ports">Ports</h2>
<p>
  TODO: complete this section, or delete if not needed
</p>
<h2 id="tools">Tools</h2>
<p>
  TODO: complete this section, or delete if not needed
</p>
<h3 id="go-command">Go command</h3>
<p>
  TODO: complete this section, or delete if not needed
</p>

<h4 id="go-unix">New <code>unix</code> build constraint</h4>

<p><!-- CL 389934 -->
  The build constraint <code>unix</code> is now recognized
  in <code>//go:build</code> lines. The constraint is satisfied
  if the target operating system, also known as <code>GOOS</code>, is
  a Unix or Unix-like system. For the 1.19 release it is satisfied
  if <code>GOOS</code> is one of
  <code>aix</code>, <code>android</code>, <code>darwin</code>,
  <code>dragonfly</code>, <code>freebsd</code>, <code>hurd</code>,
  <code>illumos</code>, <code>ios</code>, <code>linux</code>,
  <code>netbsd</code>, <code>openbsd</code>, or <code>solaris</code>.
  In future releases the <code>unix</code> constraint may match
  additional newly supported operating systems.
</p>

<h2 id="runtime">Runtime</h2>
<p>
  TODO: complete this section, or delete if not needed
</p>
<h2 id="compiler">Compiler</h2>
<p>
  TODO: complete this section, or delete if not needed
</p>
<h2 id="linker">Linker</h2>
<p>
  TODO: complete this section, or delete if not needed
</p>
<h2 id="library">Core library</h2>
<p>
  TODO: complete this section
</p>
<h3 id="minor_library_changes">Minor changes to the library</h3>
<p>
  As always, there are various minor changes and updates to the library,
  made with the Go 1 <a href="/doc/go1compat">promise of compatibility</a>
  in mind.
</p>
<p>
  TODO: complete this section
</p>
<dl id="net"><dt><a href="/pkg/net/">net</a></dt>
  <dd>
    <p><!-- CL 386016 -->
      The pure Go resolver will now use EDNS(0) to include a suggested
      maximum reply packet length, permitting reply packets to contain
      up to 1232 bytes (the previous maximum was 512).
      In the unlikely event that this causes problems with a local DNS
      resolver, setting the environment variable
      <code>GODEBUG=netdns=cgo</code> to use the cgo-based resolver
      should work.
      Please report any such problems on <a href="/issue/new">the
      issue tracker</a>.
    </p>

    <p><!-- CL 396877 -->
      When a net package function or method returns an "I/O timeout"
      error, the error will now satisfy <code>errors.Is(err,
      context.Canceled)</code>.  When a net package function returns
      an "operation was canceled" error, the error will now satisfy
      <code>errors.Is(err, context.DeadlineExceeded)</code>.
      These changes are intended to make it easier for code to test
      for cases in which a context cancelation or timeout causes a net
      package function or method to return an error, while preserving
      backward compatibility for error messages.
    </p>
  </dd>
</dl><!-- net -->

<dl id="strconv"><dt><a href="/pkg/strconv/">strconv</a></dt>
  <dd>
    <p><!-- CL 397255 -->
      <a href="/pkg/strconv/#strconv.Quote"><code>strconv.Quote</code></a>
      and related functions now quote the rune 007F as <code>\x7f</code>,
      not <code>\u007f</code>.
    </p>
  </dd>
</dl><!-- strconv -->
